package com.example.zqh.service;

import com.example.zqh.model.RespBean;
import com.example.zqh.pojo.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.zqh.pojo.params.*;

import java.security.Principal;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zqh
 * @since 2022-09-10
 */
public interface UserService extends IService<User> {

    /**
      * @Author: zqh
      * @Date:
      * @Description: 用户登录接口
    */
    RespBean login(Login login);
     
    /**
      * @Author: zqh
      * @Date: 
      * @Description: 获取当前登录用户的信息
    */
    RespBean getInfo(Principal principal);

    /**
      * @Author: zqh
      * @Date:
      * @Description: 添加一个新用户
    */
    RespBean registeredUser(RegisterParams registerParams);


    /**
      * @Author: zqh
      * @Date:
      * @Description: 用户查询接口
    */
    RespBean userQueryInterface(Integer page,Integer size);
     
    /**
      * @Author: zqh
      * @Date: 
      * @Description: 用户删除接口
    */
    RespBean userDeleteInterface(Integer id);
    
    
    /**
      * @Author: zqh
      * @Date: 
      * @Description: 管理员修改用户接口
    */
    RespBean adminModifyUserInformation(User user);


    /**
      * @Author: zqh
      * @Date:
      * @Description: 用户修改密码接口
    */
    RespBean userChangePasswordInterface(String password, Principal principal);


    /**
      * @Author: zqh
      * @Date:
      * @Description: 用户修改自己的接口
    */
    RespBean userChangeNameInterface(String name, Principal principal);


    /**
      * @Author: zqh
      * @Date:
      * @Description: 修改自己的性别
    */
    RespBean userChangeSexInterface(Integer sex, Principal principal);


    /**
      * @Author: zqh
      * @Date:
      * @Description: 修改自己的头像
    */
    RespBean userChangeHeadurlInterface(String headUrl, Principal principal);


    /**
      * @Author: zqh
      * @Date:
      * @Description: 修改自己的电话号码
    */
    RespBean userChangePhoneInterface(String phone, Principal principal);
    
    
    /**
      * @Author: zqh
      * @Date: 
      * @Description: 修改自己的年龄
    */
    RespBean userChangeAgeInterface(Integer age, Principal principal);


    /**
      * @Author: zqh
      * @Date:
      * @Description: 充值接口
    */
    RespBean rechargeInterface(Integer money, Principal principal);

    /**
      * @Author: zqh
      * @Date:
      * @Description: 修改自我简介
    */
    RespBean userChangeIntroInterface(String intro, Principal principal);

    /**
      * @Author: zqh
      * @Date:
      * @Description: 获取所有用户的数量
    */
    RespBean getTheCountOfAllUsers();
     
    /**
      * @Author: zqh
      * @Date: 
      * @Description: 模糊查询用户
    */
    RespBean fuzzyQueryUsersByZ(String oneString);
    
    /**
      * @Author: zqh
      * @Date: 
      * @Description: 通过性别查询不同性别用户的数量
    */
    RespBean getNumberBySex(Integer sex);
    
    
    /**
      * @Author: zqh
      * @Date: 
      * @Description: 通过性别查询id，并且带分页查询
    */
    RespBean getUsersBySexAndPageing(Integer sex, Integer page, Integer size);
    
    
    /**
      * @Author: zqh
      * @Date: 
      * @Description: 修改自我地址
    */
    RespBean modifySelfAddress(String address, Principal principal);


    /**
      * @Author: zqh
      * @Date:
      * @Description: 通过id查询用户的信息
    */
    RespBean queryUserInformationById(Integer id);


    /**
      * @Author: zqh
      * @Date:
      * @Description: 后台管理系统登录系统
    */
    RespBean adminLogin(Login login);
}
